package com.demo.common.core.exception;

import cn.hutool.core.util.StrUtil;
import lombok.experimental.UtilityClass;
import java.util.Objects;

@UtilityClass
public class Checker {

    /**
     * obj 为 null 则 抛异常
     * @param obj Object
     * @param errorCode ResponseErrorCode
     */
    public void isNull(final Object obj, ResponseErrorCode errorCode) {
        if(Objects.isNull(obj)){
            throw new BaseException(errorCode);
        }
    }

    /**
     * obj 不为 null 则 抛异常
     * @param obj Object
     * @param errorCode ResponseErrorCode
     */
    public void notNull(final Object obj, ResponseErrorCode errorCode) {
        if(Objects.nonNull(obj)){
            throw new BaseException(errorCode);
        }
    }

    /**
     * cs 为 blank 则 抛异常
     * @param cs CharSequence
     * @param errorCode ResponseErrorCode
     */
    public void isBlank(final CharSequence cs, ResponseErrorCode errorCode) {
        if(StrUtil.isBlank(cs)){
            throw new BaseException(errorCode);
        }
    }

    /**
     * cs 不为 blank 则 抛异常
     * @param cs CharSequence
     * @param errorCode ResponseErrorCode
     */
    public void notBlank(final CharSequence cs, ResponseErrorCode errorCode) {
        if(StrUtil.isNotBlank(cs)){
            throw new BaseException(errorCode);
        }
    }

    /**
     * b 为 true 则 抛异常
     * @param b Boolean
     * @param errorCode ResponseErrorCode
     */
    public void isTrue(final Boolean b, ResponseErrorCode errorCode) {
        if(b){
            throw new BaseException(errorCode);
        }
    }


    /**
     * b 为 false 则 抛异常
     * @param b Boolean
     * @param errorCode ResponseErrorCode
     */
    public void isFalse(final Boolean b, ResponseErrorCode errorCode) {
        if(!b){
            throw new BaseException(errorCode);
        }
    }


    /**
     * cs 为 empty 则 抛异常
     * @param cs CharSequence
     * @param errorCode ResponseErrorCode
     */
    public void isEmpty(final CharSequence cs, ResponseErrorCode errorCode) {
        if(StrUtil.isEmpty(cs)){
            throw new BaseException(errorCode);
        }
    }

    /**
     * cs 不为 empty 则 抛异常
     * @param cs CharSequence
     * @param errorCode ResponseErrorCode
     */
    public void notEmpty(final CharSequence cs, ResponseErrorCode errorCode) {
        if(StrUtil.isNotEmpty(cs)){
            throw new BaseException(errorCode);
        }
    }
}
